﻿// 我的链表实现栈.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
using namespace std;
class Node {
public:	int data;
	Node* next;

	Node(int value) :data(value), next(nullptr) {}

};
class LinkedListStack {
    //定义Node
private:
    Node* topNode;
    //构造函数
public:
    LinkedListStack() : topNode(nullptr) {}

    //析构函数
    ~LinkedListStack() {
        /*  while (!isEmpty()) {
              pop();
          }*/
    }


    void push(int value) {
        Node * newNode = new Node(value);
        newNode->next = topNode;
        topNode = newNode;
      


    }
    void pop() 
    {
        //top给临时对象，获取临时对象里的data,将topnode下next node对象给topnode,删除临时对象。
   // 也就是删除顶层topnode ，下面对象顶上来
        Node* temp = topNode;
        topNode= temp->next;
        cout << "pop" << temp->data << endl;
        delete temp;
        
     

    }
    int top() {
        if (topNode==nullptr) {
            std::cout << "栈为空" << std::endl;
            return -1;
        }

        cout <<"top" << topNode->data << endl;
       // return topNode->data;
    }
    void print() 
    {
        
 /*       for (Node* curr = topNode; curr != nullptr; curr = curr->next)
            cout << curr->data << endl;*/
        Node* temp = topNode;
        while (temp !=nullptr) {
                
           
            cout << temp->data << endl;
            temp = temp->next;
        
        }
    }
};



int main() {
    LinkedListStack linked;
    linked.push(10);
    linked.push(20);
    linked.push(30);


    linked.print();

    linked.pop();

    linked.print();

    linked.top();

    linked.print();

}